package main.java.design.proxy.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * <p>
 *     动态代理模式
 * </p>
 *
 * @author : wangdejian
 * @version 1.0
 * @date : 2020/6/13 18:52
 */
public class Client {

    public static void main(String[] args) {
        BaoQiangStar baoQiangStar = new BaoQiangStar();
        InvocationHandler invocationHandler = new DynamicProxyHandler(baoQiangStar);
        // 参数1：指定当前目标对象使用的类加载器
        // 参数2：指定要被代理类的接口
        // 参数3：执行目标对象方法时会触发事件处理方法。
        MovieStar movieStar = (MovieStar) Proxy.newProxyInstance(baoQiangStar.getClass().getClassLoader(), baoQiangStar.getClass().getInterfaces(), invocationHandler);

        movieStar.movie();
    }

}
